#include "logdia.h"
#include "regdia.h"
#include "ui_logdia.h"
#include <QFile>
#include <QFileDialog>
#include <QMessageBox>

logDia::logDia(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::logDia)
{
    ui->setupUi(this);
    this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
    connect(ui->pbclose,SIGNAL(clicked()),
            this,SLOT(close()));

    connetD2B();
}

logDia::~logDia()
{
    delete ui;
}





void logDia::connetD2B()
{
    // 获取数据库的连接对象,QSQLITE是sqlite3驱动
    db = QSqlDatabase::addDatabase("QSQLITE");
    // 设置数据库名称
    db.setDatabaseName("family.db");
    // 打开数据库连接
    bool ret = db.open();
    if(ret == true)
    {
        qDebug () << "打开成功";
        createTable();
    }
    else
    {
        // 数据库连接打开失败
        QSqlError errInfo = db.lastError();
        QString text = errInfo.text();
        QMessageBox::critical(this,"错误",text);
    }

}

void logDia::createTable()
{
    // 创建表
    // sql语句
    QString sql = "CREATE TABLE login(id TEXT PRIMARY KEY, password TEXT, avatar_path TEXT);";

    // 创建数据库操作类
    QSqlQuery sq;

    if(sq.exec(sql))    // 表创建成功
    {
        qDebug() << "建表成功";
    }
    else    // 建表失败，注意：建表成功或者失败都很正常，如果要建立的表已经存在，就会建表失败
    {
        QSqlError errInfo = sq.lastError();
        QString text = errInfo.text();
        qDebug() << "建表失败或者已经存在:" << text;
    }


}

void logDia::seleteAll()
{
    //    QString inputId = ui->lineEdit->text();
    //    QString inputPwd = ui->lineEdit_2->text();
    //    //查询(验证)账号密码
    //    QString sql = "SELECT * FROM login";
    //    QSqlQuery sq;

    //    if(sq.exec(sql))
    //    {
    //       while(sq.next())    // 循环取出
    //       {
    //           QString id = sq.value(0).toString();//账号
    //           QString password = sq.value(1).toString();//密码



    //           if (id == inputId && inputPwd == password) {
    //               qDebug() << "账号或密码错误";
    //               QMessageBox::critical(this,"错误", "账号或密码错误");
    //               ui->perBtn->setCheckable(false);
    //               return;
    //           }
    //         }
    //     }

}

bool logDia::isDataExists()
{
    //数据是否存在
    QString inputId = ui->lineEdit->text();
    // 预处理的SQL语句
    QString sql = "SELECT * FROM login WHERE = ?";
    // 预处理
    QSqlQuery sq;
    sq.prepare(sql);
    // 绑定参数
    sq.addBindValue(inputId);
    if(sq.exec(sql))
    {

        return true;
    }
    else
    {

        return false;
    }



}
void logDia::on_regButton_clicked()
{
    //注册(插入)
    // 这里应该显示注册
    regDia *reg = new regDia(this, db); // 传入 db 变量
    reg->show();
    QString inputId = ui->lineEdit->text();

    QString inputPwd = ui->lineEdit_2->text();
    //    if(inputId=="")
    //    {
    //        QMessageBox::warning(this,"警告", "请输入账号");
    //        return;
    //    }

    //    if(inputPwd=="")
    //    {
    //        QMessageBox::warning(this,"警告", "请输入密码");
    //        return;
    //    }

    //    // 预处理的SQL语句
    //    QString sql = "INSERT INTO login VALUES(?,?)";

    //    // 预处理
    //    QSqlQuery sq;
    //    sq.prepare(sql);

    //     // 绑定参数
    //    sq.addBindValue(inputId);
    //    sq.addBindValue(inputPwd);


    //       // 执行绑定后的SQL语句
    //       if(sq.exec())
    //       {
    //           if(isDataExists())
    //           {
    //               QMessageBox::warning(this,"警告", "账号已经存在");
    //               return;
    //           }
    //           QMessageBox::information(this,"通知","账号注册成功");
    //       }
    //       else // 失败
    //       {
    //          // 获取错误信息封装类
    //           QSqlError info = sq.lastError();
    //           QString text = info.text();
    //           QMessageBox::warning(this,"通知","账号注册失败");
    //           qDebug() << text;
    //       }


}

void logDia::on_loginButton_clicked()
{

    inputId = ui->lineEdit->text();
    inputPwd = ui->lineEdit_2->text();

    if(inputId.isEmpty())
    {
        QMessageBox::warning(this,"警告", "请输入账号");
        return;
    }

    if(inputPwd.isEmpty())
    {
        QMessageBox::warning(this,"警告", "请输入密码");
        return;
    }

    // 查询账号密码
    QString sql = "SELECT * FROM login WHERE id = ? AND password = ?";
    QSqlQuery sq(db);
    sq.prepare(sql);
    sq.addBindValue(inputId);
    sq.addBindValue(inputPwd);

    if(sq.exec() && sq.next()) // 如果查询成功且有结果
    {
        qDebug() << "成功登录";

        // 这里应该显示主窗口
        HomePage *w = new HomePage(nullptr, getDatabase());
        w->setvalue(inputId);
        w->show();
        close();
    }
    else // 没有找到匹配的记录
    {
        qDebug() << "账号或密码错误";
        QMessageBox::critical(this,"错误", "账号或密码错误");
    }
}

QSqlDatabase logDia::getDatabase() const
{
    return db;
}

